package dao.Implementation;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import Donnees.Pays;
import Util.HibernateUtil;
import dao.Interfaces.IPaysDAO;

public class PaysDAO implements IPaysDAO {
	public PaysDAO() {
	}

	public List<Pays> selectAll() {
		List<Pays> listePays = new ArrayList<Pays>();

		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction tx = session.beginTransaction();

		listePays.addAll(session.createQuery("from Pays").list());

		session.flush();
		tx.commit();
		session.close();

		return listePays;
	}

	public long insert(Pays p) {
		Pays paysTemp = p;
		Long msgId;

		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction tx = session.beginTransaction();

		msgId = (Long) session.save(paysTemp);

		session.flush();
		tx.commit();
		session.close();
		
		return msgId;
	}
	
	public int delete(Pays p) {
		Pays paysTemp = p;
		int retour;
		
		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction tx = session.beginTransaction();
		
		retour = session.createQuery("delete from Pays where nom='" + paysTemp.getNom() + "'").executeUpdate();

		session.flush();
		tx.commit();
		session.close();
		
		return retour;
	}
	
	public Pays getByName(String nom) {
		Pays pays = new Pays();

		Session session = HibernateUtil.getSessionFactory().openSession();
		Transaction tx = session.beginTransaction();

		pays = (Pays) session.createQuery("from Pays where nom='" + nom + "'").list().get(0);

		session.flush();
		tx.commit();
		session.close();

		return pays;
	}
}
